package app.negocio;

import app.modelo.Libro;
import java.io.Serializable;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.List;

/**
 * Clase que representa al carrito de la compra de la apliación. Implementa la
 * interface Seriablizable.
 *
 * @author Johann Pando.
 */
public class Carrito implements Serializable {

    private List<Libro> listaLibros;
    private double importe;

    /**
     * Constructor por defecto.
     */
    public Carrito() {
        listaLibros = new ArrayList<>();
    }

    /**
     * Método que añade un Libro e incrementa el importe.
     *
     * @param libro
     */
    public void agregarLibro(Libro libro) {
        listaLibros.add(libro);
        //importe += libro.getPrecio();
        //importe = importe.add(BigDecimal.valueOf(libro.getPrecio()));
        //Usamos la clase BigDecimal para obtener resultados precisos al sumar o restar doubles
        BigDecimal importeTemporal = BigDecimal.valueOf(importe);
        importeTemporal = importeTemporal.add(BigDecimal.valueOf(libro.getPrecio()));
        importe = importeTemporal.doubleValue();
    }

    /**
     * Método que elimina un Libro y decrementa el importe.
     *
     * @param libro
     */
    public void eliminarLibro(Libro libro) {
        Libro eliminar = null;
        for (Libro l : listaLibros) {
            if (l.getID() == libro.getID()) {
                eliminar = l;
                break;
            }
        }
        listaLibros.remove(eliminar);
        //importe -= libro.getPrecio();
        //importe = importe.subtract(BigDecimal.valueOf(libro.getPrecio()));
        //Usamos la clase BigDecimal para obtener resultados precisos al sumar o restar doubles
        BigDecimal importeTemporal = BigDecimal.valueOf(importe);
        importeTemporal = importeTemporal.subtract(BigDecimal.valueOf(libro.getPrecio()));
        importe = importeTemporal.doubleValue();
    }

    public List<Libro> getListaLibros() {
        return listaLibros;
    }

   public double getImporte() {
        return importe;
    }
}
